package com.itehima.stream;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collector;
import java.util.stream.Collectors;

public class Demo10 {
    public static void main(String[] args) {

        //关于收集流中的数据，放到集合中的操作方法（list,set,Map）

        ArrayList<String> list=new ArrayList<>();
        Collections.addAll(list, "张无忌-男-15", "周芷若-女-14", "赵敏-女-13", "张强-男-20",
                "张三丰-男-100", "张翠山-男-40", "张良-男-35", "王二麻子-男-37", "谢广坤-男-41");


        //收集到list集合当中
        //要用到split（）方法，实现切割
        List<String> newList1 = list.stream().filter(s -> "男".equals(s.split("-")[1]))
                .collect(Collectors.toList());//将符合条件的数据收集到list集合中

//        System.out.println(newList1);//[张无忌-男-15, 张强-男-20, 张三丰-男-100, 张翠山-男-40, 张良-男-35, 王二麻子-男-37, 谢广坤-男-41]


        //收集到set集合当中,toset默认是收集到hashset集合当中去
        Set<String> newlist2 = list.stream().filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toSet());
        //System.out.println(newlist2);


        //收集到map集合当中去，需要考虑键值两个数据

//        Map<String, Integer> newlist3 = list.stream().filter(s -> "男".equals(s.split("-")[1]))
//                //function 泛型1：表示流中每一个数据的类型，泛型2表示map集合中键的数据类型
//                //apply形参：依次表示流里面的每一个数据，方法体:生成键的代码，返回值：已经生成的键
//                .collect(Collectors.toMap(new Function<String, String>() {
//                    @Override
//                    public String apply(String s) {
//                        return s.split("-")[0];
//                    }
//                }, new Function<String, Integer>() {
//                    @Override
//                    public Integer apply(String s) {
//                        return Integer.parseInt(s.split("-")[0]);
//                    }
//                }));

        Map<String, Integer> map2 = list.stream().filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toMap(s -> s.split("-")[0], s -> Integer.parseInt(s.split("-")[2])));
        System.out.println(map2);




    }
}
